package com.shm.leetcode;

/**
 * @author: shm
 * @dateTime: 2020/10/8 10:20
 * @description: 345. 反转字符串中的元音字母
 * 编写一个函数，以字符串作为输入，反转该字符串中的元音字母。
 *
 *
 *
 * 示例 1：
 *
 * 输入："hello"
 * 输出："holle"
 * 示例 2：
 *
 * 输入："leetcode"
 * 输出："leotcede"
 *
 *
 * 提示：
 *
 * 元音字母不包含字母 "y" 。
 */
public class ReverseVowels {
    public String reverseVowels(String s) {
        char[] chars = s.toCharArray();
        int i=0;
        int j=chars.length-1;
        while (i<j){
            while (i<j&&!isVowels(chars[i])){
                i++;
            }
            while (i<j&&!isVowels(chars[j])){
                j--;
            }
            //注意
//            if(i>=j){
//                break;
//            }
            if (isVowels(chars[i])&&isVowels(chars[j])){
                swap(chars,i,j);
            }
            i++;
            j--;
        }
        // 转换成字符串返回
        return new String(chars);
    }

    public boolean isVowels(char c){
        return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'
                ||c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U';
    }

    public void swap(char[] chars,int i,int j){
        char tmp = chars[i];
        chars[i] = chars[j];
        chars[j] = tmp;
    }
}
